package TableModels;

import Entities.HdChamados;
import Util.Constantes;
import Util.StatusChamado;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Ferrari
 */
public final class ChamadosRelatorioTableModel {

    private static DefaultTableModel model;
    
    private ChamadosRelatorioTableModel() {
    }
    
    public static void init(){
        model = new DefaultTableModel();
        model.setColumnCount(11);
        String[] colunas = new String[]{
                Constantes.COLUNA_CODIGO,
                Constantes.COLUNA_SOLUCAO,
                Constantes.COLUNA_DESCRICAO,
                Constantes.COLUNA_DT_CRIACAO_CHAMADO,
                Constantes.COLUNA_DT_INICIO_CHAMADO,
                Constantes.COLUNA_DT_FIN_CHAMADO,
                Constantes.COLUNA_STATUS,
                Constantes.COLUNA_EQUIPAMENTO,
                Constantes.COLUNA_CO_TIPO_PRO,
                Constantes.COLUNA_CO_USER,
                Constantes.COLUNA_CO_USER_SUPORTE
        };
        model.setColumnIdentifiers(colunas);
    }
    
    private static void addChamado(HdChamados chamado){
        SimpleDateFormat sdf = new SimpleDateFormat(Constantes.FORMATO_DATA);
        
        List<String> s = new ArrayList<>();
        try{
            s.add(String.valueOf(chamado.getCoChamado()));
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(chamado.getDeSolucao());
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(chamado.getDeChamado());
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(sdf.format(chamado.getDtCriacaoChamado()));
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(sdf.format(chamado.getDtInicioSuporte())); 
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(sdf.format(chamado.getDtFinalizacaoSuporte()));
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(StatusChamado.getStatusByCod(chamado.getStChamado()));
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(chamado.getCoEquipamento().getDeEquipamento());
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(chamado.getCoTipoProblema().getDeTituloProblema());
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(chamado.getCoUserResp().getNmUser());
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        try{
            s.add(chamado.getCoUserSuporte().getNmUser());
        }catch(Exception e){
            s.add(Constantes.STRING_VAZIA);
        }
        
        String []  linha = new String[]{
            s.get(0),
            s.get(1),
            s.get(2),
            s.get(3),
            s.get(4),
            s.get(5),
            s.get(6),
            s.get(7),
            s.get(8),
            s.get(9),
            s.get(10)
        };
        
        getModel().addRow(linha);
    }
    
    public static DefaultTableModel addAllChamados(List<HdChamados> listaChamados){
        limpaTabela();
        try{
            for (HdChamados hdChamados : listaChamados) {
                addChamado(hdChamados);
            }
            return getModel();
        }catch(Exception e){
            return getModel();
        }
    }
    
    public static DefaultTableModel getModel() {
        if (model == null) {
            init();
        }
        return model;
    }
    
    public static void limpaTabela(){
        getModel().setRowCount(0);
    }
}